package com.example.controller;

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author qinlun
 * @date 2022/11/29
 */
@RestController
@RequestMapping("/login")
public class LoginController {


    @ApiOperation("获取token")
    @GetMapping("/getToken")
    public String getToken(HttpServletRequest request, HttpServletResponse response){
        //HttpServletRequest：HttpServletRequest对象代表客户端的请求，当客户端通过HTTP协议访问服务器时，HTTP请求头中的所有信息都封装在这个对象中。
        //获得客户端的信息
        request.getRequestURL();//方法返回客户端发出请求时的完整URL。
        request.getRequestURI(); //方法返回请求行中的资源名部分，去掉主机名的部分。
        request.getRemoteAddr(); //方法返回发出请求的客户机的IP地址
        request.getRemoteHost(); //方法返回发出请求的客户机的完整主机名
        request.getRemotePort(); //方法返回客户机所使用的端口号
        request.getLocalAddr(); //方法返回WEB服务器的IP地址。
        request.getLocalName(); //方法返回WEB服务器的主机名
        request.getMethod(); //得到客户机请求方式，如GET,POST

        //获得请求头
        request.getHeader("");
        request.getHeaders("");
        request.getHeaderNames();
        //获取请求参数
        String name = request.getParameter("name");
        System.out.println(name);
        StringBuffer requestURL = request.getRequestURL();
        System.out.println(requestURL);
        String connection = request.getHeader("Connection");
        System.out.println(connection);
        String authorization = request.getHeader("Authorization");
        System.out.println(authorization);

        //HttpServletResponse：是服务器的响应对象。这个对象中封装了向客户端发送数据、发送响应头，发送响应状态码的方法。
        //常用的方法
        response.addCookie(new Cookie("name","zhangsan")); //向客户端写入Cookie
        response.addHeader("name","zhangsan"); //写入给定的响应头
        response.encodeURL(""); // 默认cookie中包含Session ID，如果客户端不支持 Cookie，就在参数 url 中加入 Session ID 信息，可以解决用户禁用cookie的问题。
        response.setStatus(1);  //设置响应的状态码。
        return null;
    }

}
